# create_folder.py
import os
import shutil
import logging

class FolderCopier:

    # 定义类变量
    new_folder_name = ""
    destination_folder = ""
    def __init__(self):
        self.setup_logging()

    def setup_logging(self):
        # 创建日志文件路径
        log_file_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'folder_copy_log.txt')
        logging.basicConfig(filename=log_file_path, level=logging.INFO,
                            format='%(asctime)s - %(levelname)s - %(message)s')
        logging.info("文件夹复制器启动")
    
    @classmethod
    def copy_folder(self, new_folder_name):
        FolderCopier.new_folder_name = new_folder_name.strip()  # 获取用户输入的新文件夹名称
        if not FolderCopier.new_folder_name:
            logging.warning("用户未输入新文件夹名称")
            return False  # 返回 False 表示未成功

        # 获取当前脚本的目录
        current_dir = os.path.dirname(os.path.abspath(__file__))  # 获取当前脚本的绝对路径
        source_folder = os.path.join(current_dir, '..', 'data', 'SampleFile')  # 构造 SampleFile 的路径
        FolderCopier.destination_folder = os.path.join(current_dir, '..', 'data', FolderCopier.new_folder_name)  # 构造目标路径

        # 检查源文件夹是否存在
        if not os.path.exists(source_folder):
            logging.warning(f"源文件夹 '{source_folder}' 不存在")
            return False  # 返回 False 表示未成功

        # 检查目标文件夹是否已存在
        if os.path.exists(FolderCopier.destination_folder):
            logging.warning(f"文件夹 '{FolderCopier.new_folder_name}' 已存在，请使用其他名称。")
            return False  # 返回 False 表示未成功

        # 复制文件夹
        try:
            shutil.copytree(source_folder, FolderCopier.destination_folder)
            logging.info(f"成功复制 '{source_folder}' 到 '{FolderCopier.destination_folder}'")
            print(f"文件夹 '{source_folder}' 已成功复制为 '{FolderCopier.destination_folder}'")
            return True  # 返回 True 表示成功
        except Exception as e:
            logging.error(f"复制文件夹时出错: {str(e)}")
            print(f"复制文件夹时出错: {str(e)}")
            return False  # 返回 False 表示未成功